// 运行：node mine-regtest.ts
const RPC_URL = process.env.BITCOIN_RPC_URL || 'http://127.0.0.1:18443';
const RPC_USER = process.env.RPC_USER || 'dev';
const RPC_PASS = process.env.RPC_PASS || 'devpass';

async function rpc(method: string, params: any[] = []) {
  const res = await fetch(RPC_URL, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Basic ' + Buffer.from(`${RPC_USER}:${RPC_PASS}`).toString('base64'),
    },
    body: JSON.stringify({ jsonrpc: '1.0', id: 'mine', method, params }),
  });
  const j = await res.json();
  if (j.error) throw new Error(JSON.stringify(j.error));
  return j.result;
}

(async () => {
  // 生成一个 regtest 地址（Bech32）
  const addr = await rpc('getnewaddress', ['', 'bech32']);
  console.log('地址:', addr);

  // 挖 1 个区块到该地址
  const blocks = await rpc('generatetoaddress', [1, addr]);
  console.log('新出块:', blocks);

  // 查询余额（需要成熟 100 个块才可花费，能看到 pending 增长）
  const bal = await rpc('getbalance');
  console.log('钱包余额:', bal);
})().catch((e) => {
  console.error('错误:', e);
  process.exit(1);
});